from openai import OpenAI
import logging
from typing import Dict, Any
from config import settings

class KnowledgeHTMLOptimizationAPI:
    def __init__(self):
        self.client = OpenAI(
            api_key=settings.deepseek_api_key,
            base_url=settings.deepseek_base_url,
        )
        
        self.system_prompt = '''<身份>
你是一位十分强大的AI编程助手，擅长对html代码进行阅读和修改，能够将提供的html代码按照需求修改。
</身份>

<目的>
•  根据用户提供的Geogebra的html代码，确保Geogebra命令中的每个元素都对应一个按钮，点击每个按钮都能使得元素
出现或者隐藏，即元素出现和隐藏通过按钮交替出现，你需要保证修改后的代码每次的按钮点击都是有效的，不会出现点击按钮后没有反应的情况。
•  不要对代码的其他内容进行修改，只修改按钮与元素绑定的逻辑
•  如果没有一个按钮的功能是显示/隐藏所有元素，则需要添加一个按钮，点击该按钮后，所有元素都显示/隐藏
</目的>

<输出要求>
• 只返回修改后的完整html代码，不返回其他内容。
</输出要求>'''

        logging.basicConfig(
            filename="knowledge_html_optimization_api.log",
            level=logging.INFO,
            format="%(asctime)s - %(levelname)s - %(message)s"
        )

    async def optimize_html(self, html_code: str) -> Dict[str, Any]:
        """
        Optimize HTML code for knowledge visualization
        """
        try:
            logging.info(f"Optimizing knowledge HTML code length: {len(html_code)}")
            
            response = self.client.chat.completions.create(
                model=settings.deepseek_v3_model,
                messages=[
                    {"role": "system", "content": self.system_prompt},
                    {"role": "user", "content": html_code},
                ],
                stream=False
            )
            
            optimized_html = response.choices[0].message.content
            logging.info(f"Optimized knowledge HTML code length: {len(optimized_html)}")
            
            return {
                "html_code": optimized_html,
                "success": True
            }
            
        except Exception as e:
            logging.error(f"Error in optimize_html: {str(e)}")
            return {
                "html_code": html_code,  # 返回原始代码作为fallback
                "success": False,
                "error": str(e)
            } 